<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数声明</title>
</head>
<body>
    <script type="text/javascript">
        // 声明一个无参函数 函数名是fun1
        function fun1() {
            console.log("我是一个声明函数fun1")
        }
        fun1(); // 调用函数

        /*let a = fun1;
        a();*/
        let fun2 = function () {
            //console.log("我是一个表达式函数fun2");
            alert("我是一个表达式函数fun2");
        }
        fun2();
        let a = fun2; // 把一个函数的名字赋给一个变量, 变量a也是指向了这个函数
        a(); // 调用函数

        // 声明一个有返回值的函数
        function fun3() {
            return "我是返回值";
        }
        let result = fun3(); // 调用函数 变量result用于接收函数的返回值
        console.log(result);

        // 定义有参数的函数 函数的参数列表没有数据类型声明
        function fun4(name, age) {
            console.log(name + ":" + age);
        }

        // 调用有参的函数 如果不传值, 结果就是undefined
        fun4("Tom", 3);

        fun5(); // 声明式函数 可以在函数声明之前调用

        function fun5() {
            console.log("fun5");
        }

        //fun6(); // 表达式函数(匿名函数) 不可以在函数声明之前调用

        let fun6 = function () {
            console.log("fun6");
        }
    </script>
</body>
</html>